package com.gaogzhen.algorithm.sort;

/**
 * 选择排序
 * 1、从第一个元素开始，假定当前元素为当前位置最小的元素
 * 2、以此比较当前元素和之后的每一个元素，如果第一个元素大于后面的元素，则交互2个元素
 * 3、重复上述步骤，直到当前元素为最后一个元素
 */
public class Selection {
    // 排序
    public static void sort(Comparable[] a) {
        for (int i = 0; i < a.length - 1; i ++) {
//            int count = 0;
            for (int j = i + 1; j < a.length; j++) {
                if (compare(a[i], a[j])) {
//                    count++;
                    exch(a, i, j);
                }
            }
//            if (count == 0) break;
        }
    }

    // 比较a是否大于b
    public static boolean compare(Comparable a, Comparable b) {
        return a.compareTo(b) > 0;
    }

    // 交换元素
    public static void exch(Comparable[] a, int i, int j) {
        Comparable t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
}
